/**
 * @author 徐楠
 * @date 2022/3/13 14:36
 * @version 1.0
 */

package com.xunan.likou;

public class NonDecreasingColumn {
    public static void main(String[] args) {
        int[] nums = {3, 4, 2, 3};
        boolean result = checkPossibility(nums);
        System.out.println(result);
    }

    public static boolean checkPossibility(int[] nums) {
        if (nums.length == 1)
            return true;
        // 标识是否还能修改
        Boolean flag = nums[0] <= nums[1] ? true : false;
        // 遍历时，每次需要看连续的三个元素
        for (int i = 1; i < nums.length - 1; i++) {
            if (nums[i] > nums[i + 1])  // 出现递减
            {
                if (flag)   // 如果还有修改机会，进行修改
                {
                    // 修改方案1
                    if (nums[i + 1] >= nums[i - 1]) {
                        nums[i] = nums[i + 1];
                    }
                    // 修改方案2
                    else {
                        nums[i + 1] = nums[i];
                    }
                    flag = false;                   // 用掉唯一的修改机会
                } else {
                    // 没有修改机会，直接结束
                    return false;
                }
            }
        }
        return true;

    }

}
